import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'
/* Router Modules */
// import generaLedger from './modules/generaLedger'
// import detailed from './modules/detailed'
// import transactRecords from './modules/transactRecords' // 交易记录
// import refundManagement from './modules/refundManagement'
// import realTimeToAccount from './modules/realTimeToAccount'
// import refundRecorded from './modules/refundRecorded' // 退款记录
// import reconcliationConfig from './modules/reconcliationConfig' // 对账配置
// import systemManagement from './modules/systemManagement' // 系统配置
// import datastisim from './modules/datastisim' // 对账统计
// import compStatistics from './modules/compStatistics' // 综合统计
/**
 * Note: sub-menu only appear when route children.length >= 1
 * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
 *
 * hidden: true                   // 当设置 true 的时候该路由不会在侧边栏出现 如401，login等页面，或者如一些编辑页面/edit/1
 *
 * alwaysShow: true               当你一个路由下面的 children 声明的路由大于1个时，自动会变成嵌套的模式--如组件页面
 *                                只有一个时，会将那个子路由当做根路由显示在侧边栏--如引导页面
 *                                若你想不管路由下面的 children 声明的个数都显示你的根路由
 * redirect: noRedirect          //当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
 * name:'router-name'            // 设定路由的名字，一定要填写不然使用<keep-alive>时会出现各种问题
 * meta : {
    roles: ['admin','editor']    // 设置该路由进入的权限，支持多个权限叠加
    title: 'title'               // 设置该路由在侧边栏和面包屑中展示的名字
    icon: 'svg-name'             // 设置该路由的图标，支持 svg-class，也支持 el-icon-x element-ui 的 icon
    noCache: true                // 如果设置为true，则不会被 <keep-alive> 缓存(默认 false)  一定要和组建name一样*区分大小写
    affix: true                  // 如果设置为true，它则会固定在tags-view中(默认 false)
    breadcrumb: false            //  如果设置为false，则不会在breadcrumb面包屑中显示(默认 true)

    // 当路由设置了该属性，则会高亮相对应的侧边栏。
    // 这在某些场景非常有用，比如：一个文章的列表页路由为：/article/list
    // 点击文章进入文章详情页，这时候路由为/article/1，但你想在侧边栏高亮文章列表的路由，就可以进行如下设置
    activeMenu: '/example/list'
  }
 */

/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
export const constantRoutes = [{
        path: '/redirect',
        component: Layout,
        hidden: true,
        children: [{
                path: '/redirect/:path(.*)',
                component: () =>
                    import ('@/views/redirect/index')
            }
            // {
            //   path: '/generaLedger/totalRevenue/totalRevenueDetail/index',
            //   component: () => import('@/views/generaLedger/totalRevenue/totalRevenueDetail/index'),
            //   name: 'totalRevenueDetail',
            //   hidden: true,
            //   meta: { title: '单边账列表', noCache: true }
            // },
            // {
            //   path: '/generaLedger/totalRevenue/revenueDetail/index',
            //   component: () => import('@/views/generaLedger/totalRevenue/revenueDetail/index'),
            //   name: 'revenueDetail',
            //   hidden: true,
            //   meta: { title: '账单详情', noCache: true }
            // },
            // {
            //     path: '/transactRecords/detailsRecords/index',
            //     component: () =>
            //         import ('@/views/transactRecords/detailsRecords/index'),
            //     name: 'detailsRecords',
            //     hidden: true,
            //     meta: { title: '订单详情', noCache: true }
            // }
        ]
    },
    {
        path: '/login',
        component: () =>
            import ('@/views/login/index'),
        hidden: true
    },
    {
        path: '/auth-redirect',
        component: () =>
            import ('@/views/login/auth-redirect'),
        hidden: true
    },
    {
        path: '/404',
        component: () =>
            import ('@/views/error-page/404'),
        hidden: true
    },
    {
        path: '/401',
        component: () =>
            import ('@/views/error-page/401'),
        hidden: true
    },
    {
        path: '/',
        component: Layout,
        redirect: '/dashboard',
        children: [{
            path: 'dashboard',
            component: () =>
                import ('@/views/dashboard/index'),
            name: 'Dashboard',
            meta: { title: '首页', icon: 'dashboard', affix: true }
        }]
    }
]

/**
 * asyncRoutes
 * the routes that need to be dynamically loaded based on user roles
 */
export const asyncRoutes = [
    // billingManagement,
    // generaLedger,
    // detailed,
    // transactRecords,
    // realTimeToAccount,
    // refundRecorded,
    // refundManagement,
    // datastisim,
    // reconcliationConfig,
    // systemManagement,
    // compStatistics
    // 404 page must be placed at the end !!!
    { path: '*', redirect: '/404', hidden: true }
]

const createRouter = () =>
    new Router({
        // base: process.env.BASE_URL,
        base: process.env.BASE_URL,
        mode: 'history', // require service support
        scrollBehavior: () => ({ y: 0 }),
        routes: constantRoutes
    })

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
    const newRouter = createRouter()
    router.matcher = newRouter.matcher // reset router
}

export default router